It is publicly known that a network using an Internet protocol (IP) as a network protocol (that is, a protocol of a network layer of an OSI reference model) is generally called an IP network, and that the Internet, a local area network (LAN) and the like are types of IP networks.
Application of data transfer techniques utilizing IP networks has led to the provision of various types of real-time applications, such as an IP phone and a TV conference system, using IP packets (i.e., packets which are units of data transfer in the IP network). These real-time applications are made possible by techniques for real-time delivery of audio and image data or the like in a stream format. The real-time delivery techniques include voice over IP (VoIP), data streaming, and the like. Any one of the real-time delivery techniques requires that an allowable number of transferred streams in a network should be made as many as possible.
In these real-time delivery techniques, not a transmission control protocol (TCP) but a user datagram protocol (UDP), with which a higher transfer rate can be expected, is often used as a transfer protocol (that is, a protocol of a transport layer of an OSI reference model).
UDP provides high data transfer rate as compared to TCP, but is a protocol of a non-procedural method where delivery confirmation and the like are not performed, and does not have re-transmission control established therefor. For this reason, only an application or the like that belongs to a higher layer than UDP can detect a packet loss, a data error and the like during a transfer of data, and function as means for handling the detected loss or error, while UDP itself neither covers such detection nor functions as such handling means. For this reason, UDP is used mainly for delivery in which a loss of some data during transfer, if any, is considered as a trivial problem, such as delivery of sounds or images in the stream format. However, when a lost data amount is large, this data loss is no longer ignorable, and brings about deterioration in reliability of transfer. Consequently, in a data transfer using UDP, it is required that the lost data amount should be minimized.
Incidentally, in general, a maximum value for the data amount that can be transferred in one time (that is, in one packet) is determined for a communication network, and this value is called a maximum transmission unit (MTU). This MTU can be set by a transmitting apparatus each time the transmitting apparatus establishes a connection for transferring data. For example, an allowable data transfer amount of a receiving apparatus is restricted even if the transmitting apparatus has a larger allowable data transfer amount than that of the receiving apparatus. Hence, a maximum MTU value that can be set for a connection for transferring data from the transmitting apparatus to the receiving apparatus is the allowable data transfer amount of the receiving apparatus.
In most cases, data subjected to a data transfer in a real-time application are large in total size, like PCM sampling data or moving picture image data, and this size far exceeds an MTU value settable in the transfer. Accordingly, when data is transferred by using the UDP in a real-time application, not only should the data to be transferred be divided into a plurality of UDP packets, but also each of the UDP packets should be further divided into a plurality of small packets (referred to as fragment packets hereinafter) each having an MTU size set for the transfer, and then, those fragment packets should be sequentially transferred.
Normally, this division of each of the UDP packets into the plurality of fragment packets each having an MTP size is performed hardware-wise on the transmitting apparatus by an interface logic on a network card through an operating system (OS) and then a network card driver. Additionally, efficient transfer of the fragment packets is made possible by performing so-called a burst transfer where all of fragment packets corresponding to one UDP packet are transferred intensively and continuously.
In a burst transfer of the fragment packets, a network line is momentarily occupied by data continuously transferred from a transmitting apparatus. In this case, no problem arises if only one transmitting apparatus communicates with only one receiving apparatus. However, suppose a case where a plurality of pairs each consisting of a transmitting apparatus and a receiving apparatus use the same network line. In such a case, competition for the line occurs, and consequently causes so-called congestion if occupancies of the network line are overlapped as a result of synchronization of timings when fragment packets are transmitted from one transmitting apparatus and when fragment packets are transmitted from another transmitting apparatus.
FIG. 1 shows an environment where a burst transfer of a data packet is regularly performed from each of a plurality of transmitting apparatuses connected to an IP network. Data transferred from a transmitting apparatus A 102 to a receiving apparatus A 112, and data transferred from a transmitting apparatus B 104 to a receiving apparatus B 114 are transferred via the same relay HUBs 122 and 124 and the like by using the same IP network line 132.
FIG. 2 shows that, in the environment shown in FIG. 1, data rates (data amounts per unit time) for data transmitted for burst transfers respectively from the transmitting apparatuses A 102 and B 104 change with time.
In FIG. 2, there are overlapping periods 202 and 204 each between a burst transfer from a transmitting apparatus A and a burst transfer from the transmitting apparatus B. In each of these overlapping periods, fragment packets flowing into the IP network line 132 converge for a certain period, and a total data amount that can be allowed to flow thereinto exceeds an allowable transfer amount (also referred to as a network band) per unit time of the network line, so that fragment packets flowing from any one of the transmitting apparatuses are put into a waiting row (a queue, or a buffer) in the HUBs and the like, and thereby go into a state for waiting to be processed.
However, the capacity of a waiting row at each relay router is limited. Accordingly, in the case where packets are too many to be stored altogether in the waiting row, some of the packets waiting to be transferred are discarded, whereby data losses occur. Generally, in a burst transfer, when a loss of one fragment packet occurs, the loss is regarded as a loss of all fragment packets associated with the burst transfer, and results in losing a massive data amount, which is larger than the data amount in the actually discarded packets.
In the case of the example shown in FIG. 2, even though it is apparent that the average of a total data amount of data transfers from the transmitting apparatuses A and B is not more than an allowable transfer amount per unit time of the IP network line 132, an unreasonable result that a very large data amount is lost, as compared to a case where a single transmitting apparatus performs data transfers, in an overlapping period of burst transfers from both of the apparatuses A 102 and B 104.
In order to solve such a problem about data losses resulting from congestion, the following two methods can be considered. Firstly, one of the methods is to make the size of a UDP packet not more than a MTU size set for the transfer of the UDP packet so that the UDP packet cannot be fragmented. When this method is used, each UDP packet is made fragmentary, so that the data amount discarded at the occurrence of a data loss can be suppressed to the minimum.
However, in this method, unlike in a normal case where division of a UDP packet into a plurality of fragment packets is performed hardware-wise at high speed, generation of UDP packets by dividing data to be transferred is performed software-wise by a CPU, so that the CPU requires longer time for generating a large number of UDP packets each having a size not more than a MTU size. At the same time, the receiving apparatus side also requires longer time for reception processing of the UDP packets. Additionally, this method is not configured to highly efficiently transfer, by burst transfer or the like, a large number of UDP packets obtained by dividing data to be transferred, and consequently cannot achieve a sufficient performance as in the case where fragment packets are transferred in bursts.
Another method is to eliminate the necessity to fragment a UDP packet by setting an MTU size to a large value for the transfer of the UDP packet. For example, if the MTU size, usually set to 1500 bytes, is changed to 9000 bytes, the fragmentation can be avoided, whereby a UDP packet of a large size can be transferred without being divided.
However, configurations to which this method can be applied are extremely limited because this method is effective only in a case where a relevant network line is one having a physical standard that enables a high transfer efficiency, such as one supported by a Gigabit Ethernet; and also because it is necessary that all of router, such as a relay HUB and the like, should be ready for such large-size packet transfer.
Additionally, Japanese Patent Application Laid-open Publication No. 2005-268914 describes an invention relating to means and the like in a data generating apparatus capable of securing a certain transmission rate by transmitting data at arbitrary timings. In the data generating apparatus, in a case where there is flow control (control on whether or not data transmission should be allowed) by a transfer apparatus, which is in the upstream to the data generation apparatus, the means and the like can secure a constant data transmission rate by adjusting, inside the data generating apparatus, in accordance with a state of the flow control, a timing of transmitting data to be subsequently transmitted to the transfer apparatus.
However, the invention disclosed in Japanese Patent Application Laid-open Publication No. 2005-268914 is based on the premise that there is flow control by a transfer apparatus, which is in the upstream to each data generating apparatus, that is, the above invention refers to a method for solving the problems by adjusting (that is, speeding up), inside each data generation apparatus, future timings of transmitting data in a case where flow control is exercised from the outside of each data generating apparatus. Thus, the above invention is not configured to solve problems such as a data loss occurring as a result of congestion in data transferred from transmitting apparatuses in an environment as shown in FIG. 1 where: there is no supervisory transfer apparatus for exercising such flow control; and a plurality of transmitting apparatuses are connected directly to an IP network.